home *** CD-ROM | disk | FTP | other *** search
/ OctaMED Sound Studio 1 / OctaMED SoundStudio V1.iso / utilities / midit.doc < prev    next >
Text File  |  1996-06-18  |  22KB  |  547 lines

  1. ****************************************************************
  2. *                                                              *
  3. *               MID-It! - MMDx to MID converter                *
  4. *                                                              *
  5. *               By Mario Bianchi - Version 1.7                 *
  6. *                      Date: 26 May 1996                       *
  7. *                                                              *
  8. ****************************************************************
  9.  
  10.  
  11.     INTRODUCTION
  12.     ------------
  13.  
  14. MID-It! is an OctaMED to MID music module file converter.
  15.  
  16. It was created due to personal needs: I use OctaMED for making
  17. music at home, and sometimes I have to go to a music studio for
  18. giving my work a more professional touch.
  19.  
  20. Well, in short I was very tired of carrying my Amiga environment
  21. to the recording studios simply because the studio too had a
  22. computer (always Atari or Mac, sigh!!!), but it was never able
  23. to import OctaMED modules.
  24.  
  25. So I spent my spare time writing MID-It!.
  26. It allows you to load an OctaMED music module (MMD0 or MMD1) and
  27. get it converted in a few seconds to the universal MIDI file
  28. format 1!
  29.  
  30. I won't stay here naming all the software products that can deal
  31. with MIDI file format, just believe me when I say that they are
  32. really many, on any computer platform (never heard of Cubase,
  33. Notator, KCS Doctor T, and so on)?
  34.  
  35. I also know that this latest release is fully capable of
  36. loading and saving MIDI 0 files too, but a lot of users prefer
  37. saving as SMF 1 and because of time schedules, the author did
  38. not have time to include SMF 1 format saving, you will find that
  39. MID-It! happily saves format 1, though as yet it does not support
  40. the new MMD2/3 modules.
  41.  
  42. I will only add these features if enough users ask me to,
  43. ( see contact address below ), otherwise I may just continue
  44. development for my own needs in future.
  45.  
  46.  
  47.     RESTRICTIONS AND REQUIREMENTS
  48.     -----------------------------
  49.  
  50. The current version has some limitations:
  51.  
  52.  - Modules must be MMD0 or MMD1 type; these two module formats
  53.    can be produced by all versions of OctaMED, and it seems to
  54.    me that MED newer versions, too, have the ability to save
  55.    using the MMD0 format.
  56.    If you use OctaMED 5+, you can save your module using MMD0
  57.    or MMD1 format, but be careful that your module does not
  58.    use any of the extra features offered by MMD2 format
  59.    (refer to OctaMED documentation), otherwise your music could
  60.    loose some information if you save it using MMD0-1.
  61.  
  62.  - Modules should not contain any Amiga instruments (only MIDI
  63.    stuff is allowed!)
  64.  
  65.  - Modules should contain supplementary info - instrument names
  66.    and similar things, so be sure to save them using the right
  67.    save settings from MED/OctaMED before submitting your music
  68.    to MID-It!.
  69.  
  70.  - Only one song in a multimodule can be converted, (selectable
  71.    using the brand new -m option).
  72.  
  73.  - Track volumes (ie the ones in the "volume" window of newer
  74.    OctaMED releases) are currently not supported.
  75.  
  76. MID-It! works with any kickstart version from 1.1 to 3.1
  77. - though I couldn't test it with all of them -
  78. but needs medplayer.library 2+ in your LIBS: drawer.
  79.  
  80. If you plan to convert MMD1 modules, version 3+ is needed.
  81.  
  82. Version 5 and above should be found on the Octamed developer's
  83. disk located on Aminet (file octamedv4_dev.lha in directory
  84. "mus/edit", where you will also find a PD version of OctaMED.
  85.  
  86. Before using the library, though, read carefully the license
  87. and distribution files included!
  88.  
  89.  
  90.     USAGE
  91.     -----
  92.  
  93. MID-It! is only a CLI command, but it can be better handled by a
  94. good file manager like Directory Opus and Disk Master.
  95.  
  96. Using via this CD you simply open the cli in the system drawer
  97. and issue your commands as below..
  98.  
  99. I'll add a small user interface if the program users - well
  100. enough of them :-) - ask me to.
  101.  
  102. Usage: midit <options> <input file> <output file>
  103.  
  104. If <output file> is not specified, it will be <input file>,
  105. modified as follows:
  106.  
  107.     - any leading "mod." or "med." is cut
  108.     - any trailing ".mod" or ".med" is cut
  109.     - extension ".MID" is appended to the filename
  110.  
  111. You can also specify only a path destination without filename,
  112. Valid examples:
  113.  
  114.     midit -b -r ram:module
  115.     midit -b -r -e -q ram:module ram:convmodule
  116.     midit -breq ram:module ram:convmodule    (same as previous)
  117.     midit -r ram:med.#? RAM:sound/
  118.  
  119. Please note the slash at the end of the last example: it must
  120. ALWAYS be present if you specify a destination subdirectory
  121. without destination filename, otherwise no output file will be
  122. produced.
  123.  
  124. AmigaDOS wildcards "#?" can be used in the input filename to
  125. convert several modules with a single command line, and a
  126. special option is present to activate Unix and MS-DOS "*?"
  127. wildcards, though excluding the AmigaDOS ones.
  128.  
  129. The output file is all in all a MIDI file format 1, but its
  130. contents can be different, according to conversion type and
  131. option selected.
  132.  
  133.  
  134.     CONVERSION OPTIONS
  135.     ------------------
  136.  
  137. Three types of conversion can be performed, depending on the
  138. options specified.
  139.  
  140. Whatever conversion is used, the first track of the output MIDI
  141. file has the name of the song and contains only tempo changes,
  142. system exclusive messages, and various text events, if any.
  143.  
  144. The default conversion is the SMART one:
  145. it creates a file with one track for each instrument used in
  146. OctaMED plus the song track above mentioned.
  147. If you don't specify any conversion option, this is the one that
  148. will be performed.
  149.  
  150. The second conversion type is DIRECT (option -d):
  151. it builds a track for each OctaMED block track (this version
  152. supports up to 32 tracks per block, but in future this number
  153. is very likely to grow up to 64).
  154. Actually, the real MMD1 format was born for supporting up to
  155. 16 tracks per block, but newer releases of OctaMED allow the use
  156. of MMD1 for songs containing blocks having ANY number of tracks
  157. from 1 to 64.
  158. Be aware though that most module players around could work right
  159. only with older MMD1 modules, that can have only 4-8-12-16 tracks
  160. per block, though MID-It does not suffer from this limitation.
  161. The direct conversion generates a file in which the event
  162. ordering is exactly the same (note by note, command by command)
  163. as in OctaMED.
  164.  
  165. The third and last conversion is the CHANNEL one (option -c);
  166. it features one track for each MIDI channel; that is, if you use
  167. in a module more OctaMED instruments that share the same MIDI
  168. channel, their events will be inserted in the same MIDI file
  169. track.
  170.  
  171. Smart conversion is better (I think is is more clever to have
  172. each instrument data in a separate track) but notes will be
  173. played in a different order than on OctaMED - the real playing
  174. order depends from the player routine.
  175.  
  176. This, especially when you are working near the maximum
  177. poliphonic power of your MIDI machines, can make substantial
  178. differences when listening to the output MIDI file.
  179.  
  180. Of course, should this happen, you can change the arrangement of
  181. tracks to change note playing order.
  182. You should do it easily using a MIDI sequencer (my hint is: put
  183. first the rhythm instrument tracks).
  184.  
  185.  
  186.     MISC OPTIONS
  187.     ------------
  188.  
  189. Option -n can be used if you want that the MID file produced
  190. uses MIDI Note Off messages to turn off a note (OctaMED and
  191. Mid-It! default use instead Note On messages with 0 velocity).
  192.  
  193. Note Off messages have a fixed velocity of 127 (maximum value).
  194. If you use this option together with running status (see below)
  195. the file obtained will be longer than the 'only Note On' running
  196. status one.
  197. If you don't specify running status, file length is the same in
  198. either Note On or Off formats.
  199.  
  200. Option -p suppresses the conversion progress indicator.
  201.  
  202. Option -r produces a .MID file containing running status data,
  203. which is a simple method for compressing MIDI data.  A file
  204. using this feature is, in general, much shorter than the
  205. uncompressed one, but some sequencers (especially the very old
  206. ones) could get confused; just try it on your configuration.
  207.  
  208. Option -t causes the converter to shut all notes when the module
  209. ends (this way it can be played in loop without notes hanging
  210. across).
  211.  
  212. Option -b is valid for MMD1 modules only: this switch activates
  213. block name retain: block (or pattern, as you call them) name is
  214. introduced as a text event in the MID file just at the moment it
  215. starts to be played.
  216.  
  217. Option -e introduces an empty four beat bar before the real
  218. module data begin. This is useful if you want to insert your own
  219. MIDI setup messages before sound actually starts.
  220.  
  221. Option -u enables Unix/MS-DOS wildcards (*?) instead of the
  222. AmigaDOS ones.  This is for who is used to such systems or for
  223. converting a module which name contains the character # (the
  224. symbol ? is a wildcard in Unix too).
  225.  
  226. Option -q enables quiet mode, suppressing any warning that
  227. can be produced.
  228. BE CAREFUL: if you suppress warnings you make it at your own
  229. risk, because the conversion could be faulty and you could not
  230. be aware of it; you'd better be sure that your module is 'solid'
  231. before using this switch.
  232.  
  233. Option -m is useful when dealing with multisong modules (also
  234. called multimodules): if the song you want to convert is *not*
  235. the first in such a module, you can convert it using command -m,
  236. followed by the number of the song in the module (1 to n).
  237. By now only one song per module can be converted.
  238.  
  239. Option -s can be used to change the playing speed of your song:
  240. when activated the file resulting from the conversion contains
  241. tempo events which values are different from the original ones:
  242. the time factor specified after the -s option is added to the
  243. actual bpm value of each song tempo event.
  244. For example -s2 causes the resulting midi song to be 2 beats per
  245. minute faster than the input song (-s-2 would produce a slower
  246. song).
  247. Each and every tempo change event is altered, and resulting
  248. values are clipped in the range 1-240 beats per minute.
  249.  
  250. Please note that when using one option that needs a numeric
  251. argument, this one must follow close (with no spaces) to the
  252. option letter and, if there are other options to be specified,
  253. they have to be separately supplied.
  254. I mean:
  255.  
  256.     options to convert a module using direct conversion
  257.     and running status:
  258.  
  259.     -s3dr       Wrong: options 'd' and 'r' are ignored.
  260.     -s 3 -dr    Wrong: the 3 should immediately follow the s.
  261.  
  262.     -s3 -dr     Correct
  263.     -drs3       Correct
  264.  
  265. I hope this example was clear enough...
  266.  
  267.  
  268.     WATCH OUTs, WARNINGS AND HINTS
  269.     ------------------------------
  270.  
  271. If you use Amiga samples in your modules (together with MIDI or
  272. alone) the modules won't be converted - in current version at
  273. least.
  274.  
  275. There is a little workaround though: if you assign from OctaMED
  276. a MIDI channel to every non MIDI instrument (thus promoting it
  277. to MIDI), the module will be converted.
  278. Simply, don't expect a perfect conversion: notes will have to be
  279. transposed some octaves above and effects like pitchbend will
  280. sound awful if you try to play the module through a MIDI device.
  281. There is too much difference between Amiga and common MIDI sound
  282. hardware to map in a simple way sound handling from one to the
  283. other.  At least, with little work, you can get a MIDI file
  284. containing all note events of your non MIDI instruments too.
  285. This until a version fully supporting Amiga samples comes up, I
  286. don't know when and even if it will (read DEVELOPEMENT NOTES
  287. below).
  288.  
  289. For BPM modules, one thing is worth of being explained.
  290. The slider at the right of the BPM one - I'm gonna call it
  291. "Resolution" from now on - is intended as a 'slots per beat'
  292. indication.
  293. That is, if you set resolution to 8, then 8 block lines are
  294. intended to form a metronome beat.  Keep it in mind if your
  295. converted file sounds at different speeds than the original,
  296. or if your sequencer metronome is not synchronized with song.
  297. By now, I still haven't found a way to understand the signature
  298. of an OctaMED song (how to find that a song has a 12/8 tempo??).
  299. Because of this every MIDI file generated contains a 4/4
  300. signature setting.
  301.  
  302. WARNING: if you use in your modules things such as pattern break
  303. or song position jump to leap back in the song, the converter
  304. will loop converting it forever!!!
  305. It is recommended that you prevent this nasty accident preparing
  306. your songs to be converted so that there is always an end.
  307.  
  308. ENFORCER HITS: if you have Enforcer active when converting
  309. you could notice some occasional hits.
  310. Deep investigations, together with OctaMED's author, Teijo
  311. Kinnunen, have found that medplayer.library prior to
  312. version 6 suffer from some bugs that can cause these hits,
  313. sometime even bringing to an incorrect conversion.
  314. The V6 library fixes these bugs successfully.
  315. You can check the source of the hits using segtracker
  316. together with Enforcer: if the hitting PC location is
  317. reported in a medplayer.library hunk, this is one of the
  318. above mentioned situations. Otherwise please report them
  319. to me with as much detail as you can.
  320. I just can't do anything about it but advise you to get
  321. medplayer.library v6, as soon as the new OctaMED developer
  322. disk is out on the streets - and it should be when you read this.
  323.  
  324. HINT: OctaMED 5+ has an hidden (undocumented on V5) command,
  325. 17xx, that writes directly byte xx into controller 7 (mostly
  326. used for MIDI volume control).  I don't know if older versions
  327. support it too, so, if you think that it could be useful for
  328. you, just try it!!!
  329.  
  330.  
  331.     DEVELOPEMENT NOTES
  332.     ------------------
  333.  
  334. I have been putting all efforts to make the program bug free, but
  335. there are many features involved and particular conditions that can
  336. elude the bravest beta tester.  So you too can participate to make
  337. the project more and more solid and functional (and you are invited
  338. to do so). If you have questions or note a strange behaviour or
  339. conversion mistakes, please contact me.
  340.  
  341. All the OctaMED commands and features that can be fit in a MIDI
  342. module are implemented, but of course not all situations could be
  343. actually tested (I am just a man and beta testers are too...).
  344.  
  345. You will find below (in program history) the list of last things
  346. added, so be aware that these features are the less tested.
  347.  
  348. In previous versions of this product I told that the program was
  349. under continuous developement, but now things have changed a bit.
  350. Because of the low feedback level received so far, I really
  351. wonder if this program is of any real use to anyone.
  352. So, my current will is going on developing MID-It just to face
  353. my needs; since the current version fullfills them almost
  354. completely this could even mean that there could never be a
  355. newer release.
  356. I would have liked to add MMD2 support but, as far as I know,
  357. this format has never really become of real use, maybe because
  358. the OctaMED releases supporting it are commercial only.
  359.  
  360.  
  361.     DISTRIBUTION
  362.     ------------
  363.  
  364. This release of MID-It! is freely distributable, but only in the
  365. form of the full original archive (midit.lha).
  366. It is fully copyrighted by the author (Mario Bianchi) and you
  367. are not allowed to use it inside a commercial product nor sell
  368. it for profict without the written permission of the author.
  369. You can upload and spread the original archive wherever you
  370. wish, specifying that you are not the author.
  371.  
  372. I just ask for two more little things (don't flame me :->):
  373.  
  374.     1) If you use it frequently simply send me a postcard
  375.        from where you live, I'd really appreciate it!
  376.        This is not because I collect post cards, but instead
  377.        because I would like to know how many people are using
  378.        MID-It!, and what they think about it.
  379.  
  380.     2) I like feedback.
  381.        Please report me of every trouble, information, opinion
  382.        or enhancement you'd like to see or say about this
  383.        program.
  384.        I would also be glad if you could send me a short
  385.        description of your Amiga musical activities and
  386.        your usage - if any - of MID-It!
  387.  
  388.  
  389.     FUTURE PLANS (no promises, but who knows...)
  390.     --------------------------------------------
  391.  
  392. As you can see, there is still work to be done, and I am ready
  393. to do what I can to get it useful for as many people as I can.
  394. If people ask for a feature they'd like to find in a new
  395. release, then it is more likely that I implement it if I know
  396. that more people need it.
  397.  
  398. Just a few points that are floating in my mind:
  399.  
  400.     - As soon as I have some spare time, and I feel it could be
  401.       really useful, a MUI version could be released...
  402.  
  403.     - Please don't ask to add complete Amiga samples support -
  404.       or ask it all together, so that I can't say no.
  405.  
  406.       Sure, it would be a great result, but I think I can't get
  407.       it all by myself in a short time (and I think it's better
  408.       that people reach the Amiga-MIDI world, as soon as
  409.       possible).
  410.       If Amiga Tracker Guys can get so much from 4 poor 8 bit
  411.       audio channels, God only knows what we can hear from them
  412.       when they cross the bridge to real sound!!!
  413.       Besides that, consider that most internal audio commands,
  414.       like pitchbend, are really difficult to convert to MIDI,
  415.       because they depend on many factors outside the module
  416.       itself (MIDI device used, voice settings and so on).
  417.  
  418.     - One of the very next steps is let MID-It! support MMD2
  419.       module format too.
  420.  
  421.     - Powerpacker, XPK and lha support (like OctaMED I hope).
  422.  
  423. I hope the development of this converter will closely follow
  424. OctaMED's enhancements - or maybe OctaMED itself will be
  425. enhanced in such a way to make MID-It! useless - who knows...
  426. But this is up to you too: the success and diffusion of a
  427. product depends very much upon people supporting it.
  428.  
  429.  
  430.     DISCLAIMER
  431.     ----------
  432.  
  433. This software and information is provided "as is".
  434. No representations or warranties are made with respect to the
  435. accuracy, reliability, performance, currentness, or operation
  436. of this software and information, and all use is at your own
  437. risk. The author does not assume any responsibility or liability
  438. whatsoever with respect to your use of this software and
  439. information.
  440.  
  441.  
  442.     THANX TO...
  443.     -----------
  444.  
  445.     - Scott Watson, Michael Whitten and JF Giorgi for being
  446.       real friends and professional beta testers
  447.  
  448.     - Airon for kind support and Amiga music creation
  449.  
  450.     - Commodore for making Amiga
  451.  
  452.     - Teijo Kinnunen for writing OctaMED
  453.  
  454.     - The man who invented music (was he really a man?)
  455.  
  456.  
  457.     REACHING THE AUTHOR
  458.     -------------------
  459.  
  460.     You can contact me via email or normal mail.
  461.     Addresses are
  462.  
  463.     Mario Bianchi                 email (!!! NEW address !!!)
  464.     Via Bergamini 17
  465.     20122 Milano ITALY            mb376960@silab.dsi.unimi.it
  466.  
  467.     Email address is at University, so I can't guarantee ready
  468.     (daily) answering.
  469.  
  470.     Bye and *** SHARE AND ENJOY AMIGA AND MUSIC ***
  471.  
  472.  
  473.     PROGRAM HISTORY:
  474.  
  475.      4 March 1995 - project starts
  476.  
  477.      4 April 1995 - beta version 1.0 is ready.
  478.                     Only BPM, pure MIDI, no instrument data
  479.                     modules.
  480.                     I've already converted thirty modules,
  481.                     only getting polyphony problems with my
  482.                     MIDI keyboard.
  483.  
  484.      6 April 1995 - Real (mailed) beta testing begins.
  485.  
  486.     23 April 1995 - Version 1.0 does little, but does it
  487.                     well. Beta testers ask for MMD0 and
  488.                     ST + SPD timing compatibility.
  489.  
  490.     25 April 1995 - Version 1.1 is ready for second phase of
  491.                     beta testing.
  492.  
  493.        Changes:
  494.  
  495.        - Corrected bug when inserting program change in smart
  496.          mode - it was put in the track of the previous
  497.          instrument instead of the right one.
  498.  
  499.        - Added MMD0 comversion
  500.        - Added decimal volumes dealing
  501.        - Added ST and SPD compatibility
  502.        - Added Channel conversion type
  503.  
  504.     30 April 1995 - First release is ready (v1.1a)
  505.  
  506.     5 May 1995 - Awful bug discovered and hopefully fixed:
  507.                  various commands from FF1 to FFF caused also
  508.                  a tempo change! -> V1.1b
  509.  
  510.     7 May 1995 - Version 1.2b presents lots of new features:
  511.                  - Wildcard and filename extensions handling
  512.                  - Options -b, -e, -q, -u
  513.                  - A few (minor) bugs fixes
  514.                  - Annotation text saved as text event
  515.                  - Total playing time computed and inserted
  516.                    as text event
  517.                  - Enhanced option parser - can specify
  518.                    multiple options attached, like -qre
  519.                  - Due to wildcard support, inserted scan and
  520.                    conversion statistics
  521.  
  522.     23 May 1995 - No bug reports from beta testers -
  523.                   ready for Aminet upload!
  524.  
  525.     13 Jul 1995 - V1.2c:
  526.                   Discovered and fixed bug preventing many
  527.                   MIDI effects from being correctly converted.
  528.                   Lifted max tracks per block to 32 because
  529.                   OctaMED 5+ can save MMD1 modules having
  530.                   blocks made of more than 16 tracks.
  531.  
  532.     17 Sep 1995 - V1.2d (never released):
  533.                   Slight correction: the warn track number for
  534.                   message 'not a MIDI instrument' was wrong.
  535.  
  536.     19 Nov 1995 - v1.5:
  537.                   Added time shift option and multimodule
  538.                   support.
  539.  
  540.     18 Feb 1996 - v1.6:
  541.                   Corrected bug that caused wrong timing information
  542.                   when secondary tempo was not permanently set at 6.
  543.  
  544.     26 May 1996 - v1.7:
  545.                   Corrected bug in retrig commands: the instrument and
  546.                   song transpose were summed to the note value for each
  547.                   retrig.